package com.gitee.qdbp.general.common.api.sequence.service;

import com.gitee.qdbp.able.exception.ServiceException;

/**
 * 本地序列号生成器
 *
 * @author zhaohuihua
 * @version 170722
 */
public interface ILocalSequenceGenerator {

    /**
     * 生成一个新的序号
     * 
     * @param type 类型
     * @param subtypes 子类型
     * @return 序号
     * @throws ServiceException
     */
    String generate(String type, String... subtypes) throws ServiceException;

    /**
     * 生成一个新的序号
     * 
     * @param type 类型
     * @param subtypes 子类型
     * @return 序号
     * @throws ServiceException
     */
    default String generate(Enum<?> type, String... subtypes) throws ServiceException {
        return generate(type.name(), subtypes);
    }

}